section .data
hello db "101tf11flb10001", 0
newline db 10
section .text
global _start
_start:
mov rdi, hello
call vivod
vivod:
push rbp
push rsi
push rax
mov rax, 0
dec rdi
.loop:
call next_symbol
cmp al, 0
je .loop_end
cmp al, '1'
jne .loop
mov rsi, rdi
jmp .inner_loop
.loop_end:
pop rax
pop rsi
pop rbp
ret
.inner_loop:
call next_symbol
cmp al, '0'
je .inner_loop
cmp al, 0
je .loop_end
cmp al, '1'
jne .loop
call print_substring
jmp .loop
next_symbol:
inc rdi
mov al, byte [rdi]
ret
print_substring:
push rbx
push rcx
mov rbx, rsi
mov rcx, rdi
sub rcx, rbx
add rcx, 1
cmp rcx, 3
jb .print_substring_end
call print_string
call print_endl
.print_substring_end
pop rcx
pop rbx
ret
print_string:
push rax
push rdi
push rsi
push rdx
mov rax, 1
mov rdi, 1
mov rsi, rbx
mov rdx, rcx
syscall
pop rdx
pop rsi
pop rdi
pop rax
ret
print_endl:
push rbx
push rcx
mov rbx, newline
mov rcx, 1
call print_string
pop rcx
pop rbx
ret
mov rax, 60
mov rdi, 0
syscall
CnNlY3Rpb24gLmRhdGEKICAgIGhlbGxvIGRiICIxMDF0ZjExZmxiMTAwMDEiLCAwCiAgICBuZXdsaW5lIGRiIDEwCgpzZWN0aW9uIC50ZXh0CiAgICBnbG9iYWwgX3N0YXJ0Cgpfc3RhcnQ6CiAgICBtb3YgcmRpLCBoZWxsbwogICAgY2FsbCB2aXZvZAoKICAgIGNhbGwgZXhpdAoKdml2b2Q6CiAgICBwdXNoIHJicAogICAgcHVzaCByc2kgICAgICAgIAogICAgcHVzaCByYXggICAgICAgIAogICAgbW92IHJheCwgMCAgICAgICAgICAgICAgICAgIAogICAgZGVjIHJkaQoKICAgIC5sb29wOgogICAgICAgIGNhbGwgbmV4dF9zeW1ib2wKICAgICAgICBjbXAgYWwsIDAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgamUgLmxvb3BfZW5kCgogICAgICAgIGNtcCBhbCwgJzEnICAgICAgICAgICAgICAgICAKICAgICAgICBqbmUgLmxvb3AKICAgICAgICAKICAgICAgICBtb3YgcnNpLCByZGkgICAgICAgICAgICAgICAgCiAgICAgICAgam1wIC5pbm5lcl9sb29wCiAgICAKICAgIC5sb29wX2VuZDoKICAgIHBvcCByYXgKICAgIHBvcCByc2kKICAgIHBvcCByYnAKICAgIAogICAgcmV0CgouaW5uZXJfbG9vcDoKICAgIGNhbGwgbmV4dF9zeW1ib2wgICAgICAgICAgICAKICAgIGNtcCBhbCwgJzAnICAgICAgICAgICAgICAgIAogICAgamUgLmlubmVyX2xvb3AgICAgICAgICAKCiAgICBjbXAgYWwsIDAgICAgCiAgICBqZSAubG9vcF9lbmQgCiAgICAKICAgIGNtcCBhbCwgJzEnCiAgICBqbmUgLmxvb3AKICAgICAgICAKICAgIGNhbGwgcHJpbnRfc3Vic3RyaW5nCiAgICBqbXAgLmxvb3AKCm5leHRfc3ltYm9sOgogIGluYyByZGkKICBtb3YgYWwsIGJ5dGUgW3JkaV0KICAKICByZXQKCnByaW50X3N1YnN0cmluZzoKICAgIHB1c2ggcmJ4CiAgICBwdXNoIHJjeAogICAgCiAgICBtb3YgcmJ4LCByc2kKICAgIG1vdiByY3gsIHJkaQogICAgc3ViIHJjeCwgcmJ4CiAgICBhZGQgcmN4LCAxCiAgICAKICAgIGNtcCByY3gsIDMKICAgIGpiIC5wcmludF9zdWJzdHJpbmdfZW5kCiAgICAKICAgIGNhbGwgcHJpbnRfc3RyaW5nCiAgICBjYWxsIHByaW50X2VuZGwKICAgIAogICAgLnByaW50X3N1YnN0cmluZ19lbmQKICAgIHBvcCByY3gKICAgIHBvcCByYngKICAgIAogICAgcmV0CgpwcmludF9zdHJpbmc6CiAgICBwdXNoIHJheAogICAgcHVzaCByZGkKICAgIHB1c2ggcnNpCiAgICBwdXNoIHJkeAoKICAgIG1vdiByYXgsIDEKICAgIG1vdiByZGksIDEKICAgIG1vdiByc2ksIHJieAogICAgbW92IHJkeCwgcmN4CiAgICBzeXNjYWxsCgogICAgcG9wIHJkeAogICAgcG9wIHJzaQogICAgcG9wIHJkaQogICAgcG9wIHJheAoKICAgIHJldAogICAgCnByaW50X2VuZGw6CiAgICBwdXNoIHJieAogICAgcHVzaCByY3gKCiAgICBtb3YgcmJ4LCBuZXdsaW5lCiAgICBtb3YgcmN4LCAxCiAgICBjYWxsIHByaW50X3N0cmluZwoKICAgIHBvcCByY3gKICAgIHBvcCByYngKICAgIAogICAgcmV0CiAgICAKZXhpdDoKICAgIG1vdiByYXgsIDYwCiAgICBtb3YgcmRpLCAwCiAgICBzeXNjYWxsCg==